17.1 属性列表
17.1.1 NSDate
date类方法
说明:获取当前日期和时间。
原型:NSDate
1 | /** |
dateWithTimeIntervalSinceNow类方法
说明:获取与当前时间相隔一定时差的日期
原型:NSDate
1 | /** |
1 | // 获取当前的日期和时间 |
17.1.2 NSData
说明:该类可以包含大量的字节,可以获得数据的长度和指向字节启示位置的指针
用途:如果想将数据块传递给一个函数或方法,可以通过传递一个NSData
来实现。
注意:NSData
是一个对象,支持自动释放
的,常规的内存管理对它是有效的,因而无需担心内存清理的问题。
dataWithBytes类方法
说明:创建一个保存一个普通C字符串(一个字节序列)的
NSData
对象。
原型:NSData
1 | /** |
扩展:
NSData
是不可变的,创建后不能改变其中的内容来;NSMutableData
是可变的,可以在数据中添加和删除字节。
1 | // c 语言字符串 |
17.1.3 写入和读取属性列表
说明:属性列表类可以存储到文件中,也可以从文件中读取出来。此外,
Xcode
包含一个属性列表编辑器,可以用来方便地查看plist
文件。
注意:如果出现问题,下面介绍的函数都不会返回具体的错误的原因。
writeToFile实例方法
说明:将属性列表的内容写入到文件。
技巧:应尽量使用atomically
的方式保存文件,除非保存的文件容量非常大,会占用用户大量的磁盘空间。
原型:NSArray
1 | /** |
arrayWithContentsOfFile类方法
说明:读取文件中的数组信息并据此创建数组。
原型:NSArray
1 | /** |
1 | // 创建 NSArray 实例 |
/tmp/verbiage.txt
1 | "1.0" encoding="UTF-8" xml version= |
17.1.4 修改对象类型
说明:存储或加载属性列表时可以使用
NSPropertyListSerialization
添加一些设定项。
dataFromPropertyList类方法
说明:存储到文件时指定设定项。已过时。
原型:NSPropertyListSerialization
1 | /** |
1 | // 可变数组(首都集合) |
propertyListFromData实例方法
说明:以指定形式将文件读取到内存。
原型:NSPropertyListSerialization
1 | /** |
1 | // 从文件中读取属性列表数据 |
17.2 编码对象
说明:
Cocoa
具备一种将任意对象转换成某种格式并保存到磁盘中的机制。
- 序列化(编码):将对象的实例变量和其他数据编码为数据块,然后保存到磁盘
- 反序列化(解码):将数据块读回内存,并基于保存的数据创建新对象
NSCoding协议
说明:通过采纳该协议,可以使对象具备
序列化和反序列化
的能力。
原型:
1 | @protocol NSCoding |
archiveDataWithRootObject类方法
说明:对对象进行编码。
- 创建了一个
KSKeyedArchier
实例- 将上一步创建的实例传递给参数指定的对象的
encodeWithCoder
方法- 递归编码自身使用到的其它对象,比如字符串、数组及放入数组中的任何对象
- 所有对象完成键值编码后,被放入一个
NSData
对象并返回原型:
KSKeyedArchiver
1 | /** |
Thingie.h
1 |
|
Thingie.m
1 |
|
main.m
1 |
|